漫谈数仓建模之 范式模型
The following article is from MetaThinking Author 庚庚
福利活动:送书啦!《实时流计算系统设计与实现》
如果你还记得的话,我们之前一起学习分享过 系列 | 漫谈数仓第二篇NO.2 数据模型 ,今天我们再一起深入理解一下范式建模。
范式建模是数据仓库建模的其中一种方法,范式建模不仅在线上业务数据库中展现了强劲的风采,也在数据仓库侧发挥着重要的作用。范式建模的难度在于如何抽象业务,来进行DW建设前夕的准备工作。建好了这一层的数据模型,对于DW层数据的建设,将是大大的提高了效率和大大的降低了复杂性。
W. H.Inmon企业信息化工厂架构图
图片来源网络
0x01 背景
范式模型即实体关系(ER)模型,是数据仓库之父W.H.Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构,从关系型数据库的角度出发,结合了业务系统的数据模型,站在企业级的高度设计一个3NF模型,实现数据仓库的建模。
0x02 范式模型之三大范式
1、第一范式(1NF):原子性,列不可再分,每一列只包含一个属性,所有属性的类型都是一样的,而不能是集合,数组,记录等非原子数据项,即实体中的某个属性有多个值时,必须拆分为不同的属性。这是所有关系型数据库的最基本要求;
2、第二范式(2NF):唯一性,一个表只说明一个事物,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;
(1)函数依赖
Y函数依赖于X,但同时Y并不完全函数依赖于X,那么我们就称Y部分函数依赖于X,记作 X P--->Y。
包含在任何一个码中的属性成为主属性,举个例子,假设公民表中的字段(身份证号、姓名、联系方式,联系内容),主属性有两个身份证号、联系方式。
第一步:找出数据表中所有的码
第二步:根据第一步所得到的码,找出所有的主属性
第三步:数据表中,除去所有的主属性,剩下的就都是非主属性了
第四步:查看是否存在非主属性对码的部分函数依赖
3、第三范式(3NF):每列都与主键有直接关系,属性不能传递依赖于主属性。
符合第三范式的关系必须具有以下三个条件:
0x03 范式模型的特点
同一份数据只存放在一个地方,因此只能从一个地方获取,没有数据冗余,保证了数据一致性。
解耦(系统级与业务级),方便维护
设计思路自上而下,适合上游基础数据存储,同一份数据只存储一份,没有数据冗余,方便解耦,易维护,缺点是开发周期一般比较长,维护成本高。
0x04 范式模型的优缺点
1、优点
2、缺点
0x05 范式模型应用场景
通过范式模型构建一个符合三范式的集中式的数据中心DW层,此层次的表一般不对BI和应用开放,而是基于DW的数据构建数据集市DM层来对外服务,DM层的数据一般也采用范式建模。不过随着对分析决策的需求,融入了维度建模的思想,采用维度建模构建出来的数据模型更加符合普通人的认知、易于被普通人所理解,从而有利于数据的推广使用,但是并未提出使用一致性维度。
欢迎加入 技术交流群。戳:快来加入数据交流群吧~
推荐阅读
数据治理 | 美团配送数据治理实践
▼ 福利时刻 ▼
01. 后台回复「经典」,即可领取大数据数仓经典书籍。
02. 后台回复「中台」,即可领取大厂中台架构高清ppt。
03. 后台回复「加群」,或添加小助微信ID:iom1128 拉您入群(备注方向:大数据|数仓|分析|Flink|资源|python|爬虫)或领取资料。
Q: 关于实时数仓,你还想了解什么?
欢迎留言区与大家分享
觉得不错,请把这篇文章分享给你的朋友哦
入群请联系小助手:iom1128『紫霞仙子』
更多精彩,请戳"阅读原文"到"数仓之路"查看
!关注不迷路~ 各种干货、资源定期分享!